﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AVEIT.autogestionAVEIT.Negocio.Gestores;
using AVEIT.autogestionAVEIT.Negocio.Entidades;

namespace AVEIT.autogestionAVEIT.Presentacion.Navegacion.Proyecto
{
    public partial class SocioABM : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ddl_tipo_documento.DataTextField = "descripcion";
                ddl_tipo_documento.DataValueField = "id_tipoDni";
                ddl_tipo_documento.DataSource = GestorTipoDocumento.ObtenerTipoDoc();
                ddl_tipo_documento.DataBind();
                ddl_tipo_documento.Items.Insert(0, new ListItem("Seleccione un Tipo de Documento"));
                ddl_tipo_documento.SelectedIndex = 0;

                ddl_pais.DataTextField = "nombre";
                ddl_pais.DataValueField = "id_pais";
                ddl_pais.DataSource = GestorDomicilio.ObtenerPaises();
                ddl_pais.DataBind();
                ddl_pais.Items.Insert(0, new ListItem("Seleccione un pais", "0"));
                ddl_pais.SelectedIndex = 0;  // opcion insertada en la primera posicion

                ddl_provincia.DataTextField = "nombre";
                ddl_provincia.DataValueField = "id_provincia";
                ddl_provincia.DataSource = GestorDomicilio.ObtenerProvincias();
                ddl_provincia.DataBind();
                ddl_provincia.Items.Insert(0, new ListItem("Seleccione una provincia", "0"));
                ddl_provincia.SelectedIndex = 0;  // opcion insertada en la primera posicion

                ddl_localidad.DataTextField = "nombre";
                ddl_localidad.DataValueField = "id_ciudad";
                ddl_localidad.DataSource = GestorDomicilio.ObtenerLocalidades();
                ddl_localidad.DataBind();
                ddl_localidad.Items.Insert(0, new ListItem("Seleccione una localidad", "0"));
                ddl_localidad.SelectedIndex = 0;  // opcion insertada en la primera posicion

                ddl_tipo_telefono.DataTextField = "descripcion";
                ddl_tipo_telefono.DataValueField = "id_tipoTelefono";
                ddl_tipo_telefono.DataSource = GestorTipoTelefono.ObtenerTipoTelefono();
                ddl_tipo_telefono.DataBind();
                ddl_tipo_telefono.Items.Insert(0, new ListItem("Seleccione un Tipo de Teléfono"));
                ddl_tipo_telefono.SelectedIndex = 0;

                btn_modificar_socio.Visible = false;
                btn_eliminar_socio.Visible = false;

                gv_socios.Visible = false;
                gv_socios.DataSource = GestorSocio.ObtenerSocios();
                gv_socios.DataBind();
              }
            //else
            //{
            //    ddl_tipo_documento.DataTextField = "descripcion";
            //    ddl_tipo_documento.DataValueField = "id_tipoDni";
            //    ddl_tipo_documento.DataSource = GestorTipoDocumento.ObtenerTipoDoc();
            //    ddl_tipo_documento.DataBind();
            //    ddl_tipo_documento.Items.Insert(0, new ListItem("Seleccione un Tipo de Documento"));
            //    ddl_tipo_documento.SelectedIndex = 0;

            //    ddl_pais.DataTextField = "nombre";
            //    ddl_pais.DataValueField = "id_pais";
            //    ddl_pais.DataSource = GestorDomicilio.ObtenerPaises();
            //    ddl_pais.DataBind();
            //    ddl_pais.Items.Insert(0, new ListItem("Seleccione un pais", "0"));
            //    ddl_pais.SelectedIndex = 0;  // opcion insertada en la primera posicion

            //    ddl_provincia.DataTextField = "nombre";
            //    ddl_provincia.DataValueField = "id_provincia";
            //    ddl_provincia.DataSource = GestorDomicilio.ObtenerProvincias();
            //    ddl_provincia.DataBind();
            //    ddl_provincia.Items.Insert(0, new ListItem("Seleccione una provincia", "0"));
            //    ddl_provincia.SelectedIndex = 0;  // opcion insertada en la primera posicion

            //    ddl_localidad.DataTextField = "nombre";
            //    ddl_localidad.DataValueField = "id_ciudad";
            //    ddl_localidad.DataSource = GestorDomicilio.ObtenerLocalidades();
            //    ddl_localidad.DataBind();
            //    ddl_localidad.Items.Insert(0, new ListItem("Seleccione una localidad", "0"));
            //    ddl_localidad.SelectedIndex = 0;  // opcion insertada en la primera posicion

            //    ddl_tipo_telefono.DataTextField = "descripcion";
            //    ddl_tipo_telefono.DataValueField = "id_tipoTelefono";
            //    ddl_tipo_telefono.DataSource = GestorTipoTelefono.ObtenerTipoTelefono();
            //    ddl_tipo_telefono.DataBind();
            //    ddl_tipo_telefono.Items.Insert(0, new ListItem("Seleccione un Tipo de Teléfono"));
            //    ddl_tipo_telefono.SelectedIndex = 0;
            //}
        }
        
        protected void ddl_pais_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddl_provincia.ClearSelection();
            ddl_provincia.DataTextField = "nombre";
            ddl_provincia.DataValueField = "id_provincia";
            ddl_provincia.DataSource = GestorDomicilio.ObtenerProvincias(int.Parse(ddl_pais.SelectedValue));
            ddl_provincia.DataBind();
            ddl_provincia.Items.Insert(0, new ListItem("Seleccione una provincia", "0"));
            ddl_provincia.SelectedIndex = 0;  // opcion insertada en la primera posicion
            ddl_localidad.Items.Clear();
            ddl_provincia.Focus();
        }

        protected void ddl_provincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            ddl_localidad.DataTextField = "nombre";
            ddl_localidad.DataValueField = "id_ciudad";
            ddl_localidad.DataSource = GestorDomicilio.ObtenerLocalidades(int.Parse(ddl_provincia.SelectedValue));
            ddl_localidad.DataBind();
            ddl_localidad.Items.Insert(0, new ListItem("Seleccione una localidad", "0"));
            ddl_localidad.SelectedIndex = 0;  // opcion insertada en la primera posicion
            ddl_localidad.Focus();
        }
        public void btnCancelar_Click(object sender, EventArgs e)
        {
            limpiar_campos_socio();
            panel_nuevo_socio.Visible = false;
            btn_nuevo.Enabled = true;
           
            btn_guardar_nuevo.Enabled = false;
            //btn_guardar_modificar.Enabled = false;
            //btn_guardar_modificar.Visible = false;
            btn_guardar_nuevo.Visible = false;

            btn_ver_listado_socios.Visible = true;
            btn_ver_listado_socios.Enabled = true;
            btn_nuevo.Visible = true;
        }
        public void limpiar_campos_socio()
        {
            txt_numero_socio.Text = "";
            txt_nombre.Text = "";
            txt_apellido.Text = "";
            txt_numero_documento.Text = "";
            año_social.ClearSelection();
            txt_fecha_nacimiento.Text = "";
            txt_calle.Text = "";
            txt_numero.Text = "";
            txt_piso.Text = "";
            txt_departamento.Text = "";
            txt_barrio.Text = "";
            txt_codigo_postal.Text = "";
            txt_email.Text = "";
            txt_facebook.Text = "";
            txt_telefono_car.Text = "";
            txt_telefono_num.Text = "";
            ddl_localidad.SelectedIndex = 0;
            ddl_pais.SelectedIndex = 0;
            ddl_provincia.SelectedIndex = 0;
            ddl_tipo_documento.SelectedIndex = 0;
        }

        protected void btn_guardar_nuevo_Click(object sender, EventArgs e)
        {   
            if (txt_numero_socio.Text == "")
            {
                // NUEVO SOCIO
                //creo un socio, incluyendo domicilio, email y telefono
               // Socio soc = new Socio(txt_nombre.Text, txt_apellido.Text, long.Parse(txt_numero_documento.Text), int.Parse(ddl_tipo_documento.SelectedValue), int.Parse(año_social.SelectedValue), 1, DateTime.Parse(txt_fecha_nacimiento.Text), 4, 1, txt_facebook.Text, txt_email.Text, txt_calle.Text, int.Parse(txt_numero.Text), txt_piso.Text, txt_departamento.Text, txt_barrio.Text, int.Parse(ddl_localidad.SelectedValue), int.Parse(txt_codigo_postal.Text), int.Parse(ddl_tipo_telefono.SelectedValue), int.Parse(txt_telefono_car.Text), int.Parse(txt_telefono_num.Text));
                Socio soc = new Socio();
                soc.nombre = txt_nombre.Text;
                soc.apellido = txt_apellido.Text;
                soc.numero_dni = long.Parse(txt_numero_documento.Text);
                soc.tipo_dni = int.Parse(ddl_tipo_documento.SelectedValue);
                soc.grupo = int.Parse(año_social.SelectedValue);
                soc.estado = 1;
                soc.fecha_nacimiento = DateTime.Parse(txt_fecha_nacimiento.Text);
                switch (int.Parse(año_social.SelectedValue))
                {
                    case 48:
                        soc.año_social = 6;
                        break;
                    case 49:
                        soc.año_social = 5;
                        break;
                    case 50:
                        soc.año_social = 4;
                        break;
                    case 51:
                        soc.año_social = 3;
                        break;
                    case 52:
                        soc.año_social = 2;
                        break;
                    case 53:
                        soc.año_social = 1;
                        break;
                    default: break;
                }
                soc.id_usuario = 1;
                soc.facebook = txt_facebook.Text;
                soc.mail = txt_email.Text;
                soc.num_domicilio = int.Parse(lbl_num_domicilio.Text);
                soc.domicilio = new Domicilio();
                soc.domicilio.id_domicilio = soc.num_domicilio;
                soc.domicilio.calle = txt_calle.Text;
                soc.domicilio.numero = int.Parse(txt_numero.Text);
                soc.domicilio.piso = int.Parse(txt_piso.Text);
                soc.domicilio.departamento = txt_departamento.Text;
                soc.domicilio.barrio = txt_barrio.Text;
                soc.domicilio.id_localidad = int.Parse(ddl_localidad.SelectedValue);
                soc.domicilio.id_provincia = int.Parse(ddl_provincia.SelectedValue);
                soc.domicilio.id_pais = int.Parse(ddl_pais.SelectedValue);
                if (txt_codigo_postal.Text != "")
                { soc.domicilio.cod_postal = int.Parse(txt_codigo_postal.Text); }
                else { soc.domicilio.cod_postal = null; }
                soc.tipo_telefono = int.Parse(ddl_tipo_telefono.SelectedValue);
                soc.tel_caracteristica = int.Parse(txt_telefono_car.Text);
                soc.tel_numero = int.Parse(txt_telefono_num.Text);
                int num_soc = GestorSocio.grabarSocio(soc);

                if (num_soc == -1)
                {
                    lbl_mensaje.Text = "Problemas para guardar el socio";
                    panel_nuevo_socio.Visible = false;
                    btn_nuevo.Enabled = true;

                    limpiar_campos_socio();
                }
                else
                {

                    txt_numero_socio.Text = num_soc.ToString();

                    lbl_mensaje.Text = "Socio creado exitosamente !!";
                    gv_socios.DataSource = GestorSocio.ObtenerSocios();
                    gv_socios.DataBind();

                    panel_nuevo_socio.Visible = false;
                    btn_nuevo.Enabled = true;
                    btn_ver_listado_socios.Visible = true;
                    limpiar_campos_socio();
                }
            }
            else
            {
                // MODIFICAR SOCIO
               
                Socio soc = new Socio();
                soc.numero_socio = int.Parse(txt_numero_socio.Text);
                soc.nombre = txt_nombre.Text;
                soc.apellido = txt_apellido.Text;
                soc.numero_dni = long.Parse(txt_numero_documento.Text);
                soc.tipo_dni = int.Parse(ddl_tipo_documento.SelectedValue);
                soc.grupo = int.Parse(año_social.SelectedValue);
                soc.estado = 1;
                soc.fecha_nacimiento = DateTime.Parse(txt_fecha_nacimiento.Text);
                switch (int.Parse(año_social.SelectedValue))
	            {   case 48: 
                        soc.año_social = 6;
                        break;
                    case 49: 
                        soc.año_social = 5;
                        break;
                    case 50: 
                        soc.año_social = 4;
                        break;
                    case 51: 
                        soc.año_social = 3;
                        break;
                    case 52: 
                        soc.año_social = 2;
                        break;
                    case 53: 
                        soc.año_social = 1;
                        break;
                    default: break;
	            }
                soc.id_usuario = 1;
                soc.facebook = txt_facebook.Text;
                soc.mail = txt_email.Text;
                soc.num_domicilio =  int.Parse(lbl_num_domicilio.Text);
                soc.domicilio = new Domicilio();
                soc.domicilio.id_domicilio = soc.num_domicilio;
                soc.domicilio.calle = txt_calle.Text;
                soc.domicilio.numero = int.Parse(txt_numero.Text);
                soc.domicilio.piso = int.Parse(txt_piso.Text);
                soc.domicilio.departamento = txt_departamento.Text;
                soc.domicilio.barrio = txt_barrio.Text; 
                soc.domicilio.id_localidad = int.Parse(ddl_localidad.SelectedValue);
                soc.domicilio.id_provincia = int.Parse(ddl_provincia.SelectedValue);
                soc.domicilio.id_pais = int.Parse(ddl_pais.SelectedValue);
                if (txt_codigo_postal.Text != "")
                { soc.domicilio.cod_postal = int.Parse(txt_codigo_postal.Text); }
                else { soc.domicilio.cod_postal = null;}
                soc.tipo_telefono = int.Parse(ddl_tipo_telefono.SelectedValue);
                soc.tel_caracteristica = int.Parse(txt_telefono_car.Text);
                soc.tel_numero = int.Parse(txt_telefono_num.Text);

                GestorSocio.modificarSocio(soc);

                lbl_mensaje.Text = "Socio modificado exitosamente !!";
                gv_socios.DataSource = GestorSocio.ObtenerSocios();
                gv_socios.DataBind();

                panel_nuevo_socio.Visible = false;
                btn_nuevo.Visible = true;
                btn_nuevo.Enabled = true;
                btn_ver_listado_socios.Visible = true;
                limpiar_campos_socio();
                
            }

           
        }

        //protected void btn_guardar_modificar_Click(object sender, EventArgs e)
        //{
        //    //creo un socio, incluyendo domicilio, email y telefono
        //    DateTime fecha = DateTime.Parse(txt_fecha_nacimiento.Text);

        //    Socio s = new Socio(txt_nombre.Text, txt_apellido.Text, long.Parse(txt_numero_documento.Text), int.Parse(ddl_tipo_documento.SelectedValue), int.Parse(año_social.SelectedValue), 1, fecha, 4, 1, txt_facebook.Text, txt_email.Text, txt_calle.Text, int.Parse(txt_numero.Text), txt_piso.Text, txt_departamento.Text, txt_barrio.Text, int.Parse(ddl_localidad.SelectedValue), int.Parse(txt_codigo_postal.Text), int.Parse(ddl_tipo_telefono.SelectedValue), int.Parse(txt_telefono_car.Text), int.Parse(txt_telefono_num.Text));

        //    GestorSocio.modificarSocio(s);

        //    lbl_mensaje.Text = "Socio modificado exitosamente !!";
        //    gv_socios.DataSource = GestorSocio.ObtenerSocios();
        //    gv_socios.DataBind();

        //    btn_nuevo.Enabled = true;
        //}
        protected void btn_nuevo_Click(object sender, EventArgs e)
        {
            limpiar_campos_socio();
           
            btn_nuevo.Enabled = false;
            panel_nuevo_socio.Visible = true;
            btn_cancelar.Enabled = true;
            btn_guardar_nuevo.Visible = true;
            btn_guardar_nuevo.Enabled = true;
            //btn_guardar_modificar.Visible = false;
            //btn_guardar_modificar.Enabled = false;
            lbl_titulo_panel_socio.Text = "Nuevo Socio";
            gv_socios.Visible = false;

            HabliltarCampos();
            txt_nombre.Focus();
        }

       protected void gv_socios_SelectedIndexChanged(object sender, EventArgs e)
        {
           panel_nuevo_socio.Visible = true;
           lbl_titulo_panel_socio.Text = "Socio";

           string a = "naranja";
           a = gv_socios.Rows[gv_socios.SelectedIndex].Cells[1].Text.ToString();
           panel_nuevo_socio.Visible = true;
           
           btn_eliminar_socio.Visible = true;
           btn_modificar_socio.Visible = true;
           btn_ver_listado_socios.Visible = false;
           btn_guardar_nuevo.Visible = false;
           //btn_guardar_modificar.Visible = false;
           btn_cancelar.Visible = false;

           Socio sc = GestorSocio.ObtenerSocio(int.Parse(a));
           txt_nombre.Text = sc.nombre;
           txt_apellido.Text = sc.apellido;
           txt_numero_socio.Text = sc.numero_socio.ToString();
           ddl_tipo_documento.SelectedIndex = sc.tipo_dni;
           txt_numero_documento.Text = sc.numero_dni.ToString();

           año_social.SelectedValue = sc.grupo.ToString();
           //año_social.SelectedItem.Value = sc.año_social.ToString();
           txt_fecha_nacimiento.Text = sc.fecha_nacimiento.ToString("dd/MM/yyyy");
           txt_facebook.Text = sc.facebook;

           //año_social.SelectedValue =

           txt_calle.Text = sc.domicilio.calle.ToString();
           txt_numero.Text = sc.domicilio.numero.ToString();
           txt_piso.Text = sc.domicilio.piso.ToString();
           txt_departamento.Text = sc.domicilio.departamento.ToString();
           txt_barrio.Text = sc.domicilio.barrio.ToString();
           txt_codigo_postal.Text = sc.domicilio.cod_postal.ToString();
           ddl_localidad.SelectedIndex = sc.domicilio.id_localidad;
           ddl_provincia.SelectedIndex = sc.domicilio.id_provincia;
           ddl_pais.SelectedValue = sc.domicilio.id_pais.ToString();
           txt_email.Text = sc.mail;
           lbl_num_domicilio.Text = sc.domicilio.id_domicilio.ToString();
                
           //telefono
           ddl_tipo_telefono.SelectedIndex = sc.tipo_telefono;
           txt_telefono_car.Text = sc.tel_caracteristica.ToString();
           txt_telefono_num.Text = sc.tel_numero.ToString();

           InhabliltarCampos();

           gv_socios.Visible = false;

           btn_ver_listado_socios.Visible = true;
           btn_ver_listado_socios.Enabled = true;
           }



        protected void ddl_tipo_telefono_SelectedIndexChanged(object sender, EventArgs e)
        {
            txt_telefono_car.Focus();
        }

        protected void btn_ver_listado_socios_Click(object sender, EventArgs e)
        {
            btn_ver_listado_socios.Enabled = false;
            btn_ver_listado_socios.Visible = false;
            btn_nuevo.Enabled = true;
            btn_modificar_socio.Visible = false;
            btn_eliminar_socio.Visible = false;

            gv_socios.SelectedIndex = -1;

            panel_nuevo_socio.Visible = false;

            lbl_titulo_panel_socio.Text = "Socio";
            lbl_mensaje.Text = "";
            
            InhabliltarCampos();
            gv_socios.Visible = true;
            gv_socios.DataSource = GestorSocio.ObtenerSocios();
            gv_socios.DataBind();
        }

        protected void btn_eliminar_socio_Click(object sender, EventArgs e)
        {
            //string b = "naranja";
            //b = gv_socios.Rows[gv_socios.SelectedIndex].Cells[1].Text.ToString();
            int num = int.Parse(txt_numero_socio.Text);
            int num_dom = int.Parse(lbl_num_domicilio.Text);
            GestorSocio.EliminarSocio(num, num_dom);
            lbl_mensaje.Text = "Socio eliminado correctamente !!";
            gv_socios.DataSource = GestorSocio.ObtenerSocios();
            gv_socios.DataBind();

            panel_nuevo_socio.Visible = false;
            btn_nuevo.Visible = true;
            btn_nuevo.Enabled = true;
            btn_modificar_socio.Visible = false;
            btn_eliminar_socio.Visible = false;

        }

        protected void btn_modificar_socio_Click(object sender, EventArgs e)
        {
            //btn_guardar_modificar.Visible = false;
            //btn_guardar_modificar.Enabled = false;
            
            btn_cancelar.Visible = true;

            btn_modificar_socio.Visible = false;
            btn_guardar_nuevo.Visible = true;
            btn_eliminar_socio.Visible = false;
            btn_ver_listado_socios.Visible = false;
            btn_nuevo.Visible = false;

            gv_socios.Visible = false;

            HabliltarCampos();

            txt_nombre.Focus();
            lbl_num_domicilio.Text = lbl_num_domicilio.Text;
        }

        protected void gv_socios_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            // Paginación de la grilla
            gv_socios.AllowPaging = true;

            gv_socios.PageIndex = e.NewPageIndex;
            gv_socios.DataSource = GestorSocio.ObtenerSocios();
            gv_socios.DataBind();
        }

        public void InhabliltarCampos()
        {
            txt_nombre.Enabled = false;
            txt_apellido.Enabled = false;
            txt_numero_documento.Enabled = false;
            ddl_tipo_documento.Enabled = false;
            año_social.Enabled = false;
            txt_fecha_nacimiento.Enabled = false;
            txt_calle.Enabled = false;
            txt_numero.Enabled = false;
            txt_piso.Enabled = false;
            txt_barrio.Enabled = false;
            txt_departamento.Enabled = false;
            ddl_localidad.Enabled = false;
            ddl_provincia.Enabled = false;
            ddl_pais.Enabled = false;
            txt_codigo_postal.Enabled = false;
            ddl_tipo_telefono.Enabled = false;
            txt_telefono_car.Enabled = false;
            txt_telefono_num.Enabled = false;
        }

        public void HabliltarCampos()
        {
            txt_nombre.Enabled = true;
            txt_apellido.Enabled = true;
            txt_numero_documento.Enabled = true;
            ddl_tipo_documento.Enabled = true;
            año_social.Enabled = true;
            txt_fecha_nacimiento.Enabled = true;
            txt_calle.Enabled = true;
            txt_numero.Enabled = true;
            txt_piso.Enabled = true;
            txt_barrio.Enabled = true;
            txt_departamento.Enabled = true;
            ddl_localidad.Enabled = true;
            ddl_provincia.Enabled = true;
            ddl_pais.Enabled = true;
            txt_codigo_postal.Enabled = true;
            ddl_tipo_telefono.Enabled = true;
            txt_telefono_car.Enabled = true;
            txt_telefono_num.Enabled = true;
        }



        
    }
}